Automatic media edit inspector

ABSTRACT

A system that provides automatic background analysis of a digital image or other media element makes a determination that the image or media element may benefit from correction, and prompts the user to use a correction feature of the system. In some implementations, the prompt itself can navigate the user to the controls for the correction feature. Accordingly, users are notified when they might benefit from correction, and they can be further led to discover a feature with which they may have previously been unfamiliar.

BACKGROUND

Various image editing tools provide an automated correction feature,which may automatically adjust brightness, saturation, focus, contrast,and other image characteristics based on an analysis of the photo. Suchcorrection features allow users to automatically correct color,exposure, and lighting problems in their photos. Unfortunately, for avariety of reasons, a user may not realize that an image might benefitfrom such correction. Furthermore, from a usability perspective, someusers may never even discover such a correction feature within an imageediting tool because they do not discern the need for correction. Otheroperational features (e.g., compression, encryption, reformatting, etc.)of a tool may also escape a user's attention, even when the user couldbenefit from such features in a particular circumstance.

SUMMARY

Implementations described and claimed herein address the foregoing andother situations by providing a system that performs automaticbackground analysis of a received digital image (or other mediaelement), making a determination that the image (or media element) maybenefit from some operational feature of the system (e.g., a correctionfeature), and prompting the user to use an operational feature of thesystem. In some implementations, the prompt itself (e.g., when selected)can navigate the user to the controls for the operational feature.Accordingly, users are notified when they might benefit from theoperational feature, and they can be further led to discover a featurewith which they may have previously been unfamiliar.

This technique can be applied to many other media (e.g., video andaudio) and operational features (e.g., compression, encryption, signing,time-stamping). For example, a background analysis may automaticallysuggest that graphical noise correction might be applied. In anotherimplementation, a background analysis of an audio file may suggest adifferent form or level of compression for certain songs and certaincircumstances. As such, the term “media element” may include withoutlimitation images, other graphical representations, video, audio, etc.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key or essentialfeatures of the claimed subject matter, nor is it intended to be used tolimit the scope of the claimed subject matter. Other features, details,utilities, and advantages of the claimed subject matter will be apparentfrom the following more particular written Detailed Description ofvarious embodiments and implementations as further illustrated in theaccompanying drawings and defined in the appended claims.

BRIEF DESCRIPTIONS OF THE DRAWINGS

FIG. 1 illustrates an example system for automatically inspecting adigital image.

FIG. 2 illustrates an example alert associated with automatic inspectionof a digital image.

FIG. 3 illustrates an example system flow for automatically inspecting adigital image using differences between an original image and acorrected image.

FIG. 4 illustrates a threshold applicable to differences between anoriginal image and a corrected image.

FIG. 5 illustrates an example system flow for automatically inspecting adigital image using evaluation of the original image.

FIG. 6 illustrates an example screenshot for applying automaticinspection of multiple digital images.

FIG. 7 illustrates example operations for automatically inspecting adigital image.

FIG. 8 illustrates a system that may be useful in implementing thedescribed technology.

DETAILED DESCRIPTION

FIG. 1 illustrates an example system 100 for automatically inspecting adigital image or other media element. An original image 102 is input toan evaluation module 104 of the example system 100. In oneimplementation, the example system 100 functions as a media application,such as an image editing software application, a video editing softwareapplication, an audio editing software application or various mediamanagement tools. In the case of an image editing software application,the original image 102 may be input from an image capture or storagedevice via a wired or wireless connection. Example storage devices mayinclude without limitation local and remote magnetic or optical storagedisks, memory storage devices, network attached storage devices, etc.Alternatively, the example system 100 may be implemented as a computingdevice, such as a digital camera, a desktop, laptop, handheld computer,etc. In a camera implementation, for example, input may be accomplishedvia an image capture operation, which passes the captured original image102 to the evaluation module 104, which may be local or remote. Itshould also be understood that a media application could be executed ona computing device.

The evaluation module 104 determines whether the original image 102could benefit from automatic correction (or some other operationalfeature of the system 100). Examples of operational features consideredby the evaluation module 104 may include without limitation brightnesscorrection, saturation correction, focus, barrel distortion correction,lens distortion correction, contrast correction, JPEG artifactcorrection, vignette distortion correction, scratch removal, noisereduction, etc

In one implementation, the evaluation module 104 performs an automaticcorrection to produce a corrected image (not shown). Then, theevaluation module 104 determines differences between the original image102 and the corrected image. If the differences satisfy an alertcriterion, then the user is alerted to the possibility and/or potentialbenefit of using an operational feature of the system 100 to correct theoriginal image. In one implementation, the user is alerted via a promptpresented on a display to the user suggesting that the user execute acorrective feature of the system 100, although alerts may also includealternative visual prompts, audio prompts, tactile prompts, or somecombination thereof. (In FIG. 1, the original image 102 is shown to theright of the evaluation module 104 with a prompt 106, which is shown inmore detail in FIG. 2.)

If the user wishes to correct the image, responsive to the prompt, he orshe may execute an operational feature module 108 (such as correctionmodule) by selecting a menu item or other control within the userinterface of the system 100. Alternatively, the prompt itself mayprovide a control to allow the user to navigate to or execute theoperational feature module 108 of the system 100. It should beunderstood that the operational feature module 108 may allow the user toinfluence or approve the operational parameters of the feature. Forexample, the user may adjust suggested parameters of the correction.Alternatively, the system 100 may automatically execute an operationalfeature on the original image 102, once the feature is selected by theuser. The system 100 may also provide an “undo” feature to allow theuser to reverse the correction if he or she does not approve of theresults. It should also be understood that the operational featuremodule 108 may incorporate multiple operational features, such as autosharpening and auto saturation correction.

In the illustrated implementation, a dialog box 110 for a “Smart PhotoFix” is shown as an example of a correction feature, one in which theuser is presented with suggested settings of a correction operation. Ascaled down version 112 of the original image 102 is shown to the left,and a scaled down version 114 of a corrected image 118, providing arepresentation what the image would look like after correction, is shownto the right. Although it may not be apparent in FIG. 1, the originalimage 102 is noticeably darker than an image resulting from thecorrection (i.e., the corrected image 118).

Controls 116 show proposed settings for altering brightness in theoriginal image 102. In one implementation, these controls can be alteredby the user, although in another implementation, these controls may belocked to the user. A control 120 shows a proposed setting for alteringthe saturation of the original image 102, and a control 122 shows aproposed setting for altering the focus (i.e., sharpness) of theoriginal image 102. Controls 124 show proposed settings for amplifyingthe blackness and the whiteness of the original image 102, with theper-pixel distribution of shadows, mid-tones, and highlights in both theoriginal image 102 and the representation 114 of the corrected imagebeing shown in the histogram 126. In the illustrated implementation,whether the user adjusts the proposed settings or not, the user canselect the OK button to apply the correction represented by the controlsettings to generate the corrected image 118. It should be understoodthat the proposed control settings may used as feature vector elements,which are discussed with regard to FIGS. 3 and 5.

FIG. 2 illustrates an example alert 200 associated with automaticinspection of a digital image. The alert 200 is displayed in associationwith an inspected image to suggest that the image may benefit fromoperational features called “Quick Fix” and “Sharpness”. In oneimplementation, it is incumbent upon the user to locate the Quick Fixfeature within the media application in response to seeing the alert200, if he or she wishes to correct the image. In an alternativeimplementation, the alert contains a one or more links or othernavigation controls that will invoke the correction feature uponselection by the user. For example, the words “Quick Fix” in the alert200 can be presented in the form of a link that invokes an autocorrection feature of the system.

The illustrated alert 200 is rendered as a translucent overlay in frontof the associated image, although other alert forms may be employedincluding blinking lights in the user interface, audible sounds,dialogue balloons (as one might see in a comic book), banners, animated(e.g., blinking or moving) controls, etc. Generally, the alert 200 isintended to attract the user's attention and prompt the user to use anoperational feature of the system. Such prompting can educate the userto understand new or previously unknown or underused features of thesystem. Furthermore, the results of using this feature can also increasethe user's satisfaction with the product. Note: the alert could alsoprompt the user to use a feature of some related product. In oneimplementation, an overlay alert or some other form of alert isdisplayed with reference to the image needing correction, such asoverlaying the image, pointing toward the image, sharing an identifierwith the image, etc.

It should also be understood that an alert may prompt the user to usemultiple features of the system. For example, an alert may prompt theuser to use an auto correct feature that corrects brightness,saturation, and focus, and also prompt the user to use a red-eyecorrection feature to remove instances of red-eye. The checkbox 202 maybe used to turn off all alerts or may be used to selectively terminatesubsequent alerts for the current feature (e.g., “Quick Fix)”.

The alert may also be associated with a setting (e.g., within the alertitself, in a configuration file, in a registry, etc.) that allows theuser to specify that the system should always or never execute aproposed operational feature when a corresponding alert criterion issatisfied. For example, the user may set the system to alwaysautomatically execute a sharpen feature without a prompt, but neverautomatically execute an exposure correction feature without a prompt.

FIG. 3 illustrates an example system flow 300 for automaticallyinspecting a digital image using differences between an original image302 and a corrected image 304. The original image 302 is input to acorrection module 306. For example, the original image 302 may be openedin an image editing software application. As the original image 302 isbeing processed and displayed in the image editing softwareapplication's user interface, the correction module 306 performs acorrection on the original image 302 to generate the corrected image(which need not be displayed). For example, an automatic brightnesscorrection operation may be performed by the correction module 306 onthe original image 302 to generate the potentially brighter correctedimage 304.

The original image 302 and the corrected image 304 are input to adifference module 308, which computes a feature vector representing oneor more differences between the original image 302 and the correctedimage 304. In one implementation, difference module 308 evaluates thetwo images in one or more different color spaces (e.g., CIELAB orL*a*b*, CIELUV or L*u*v*, CIExyY, CIEXYZ, CMY, CMYK, HLS, HSI, HSV, HVC,LCC, NCS, PhotoYCC, RGB, Y′CbCr, Y′IQ, Y′PbPr, Y′UV, etc.) in an attemptto quantify at least one measure of difference between the images. In analternative implementation, feature vector elements resulting from thedifference module 308 can represent control setting differences or otherperceptible differences. For example, instead of computingpixel-by-pixel differences, the difference module 308 can insert controladjustments suggested in the correction dialog box (see controls 116,120, 122, and 124 of FIG. 1) into the feature vector.

One type of difference computation that may be employed is based on aDelta E methodology, which is also referred to as a perceptual or visualcolor difference. Generally, a Delta E value may be computed bydetermining the difference, on a pixel-by-pixel basis between themeasured color value, L*_(o)a*_(o)b*_(o), of a pixel in the originalimage 302 and the measured color value, L*_(c)a*_(c)b*_(c), of thecorresponding pixel in the corrected image 304. In one implementation,the Delta E methodology first involves a transform of the color valuesof each pair of pixels from the RGB color space to the L*a*b*, colorspace. Note: the L*a*b* color space is considered a perceptually-basedcolor space, whereas RGB is not.

Various methods exist for computing Delta E, including Delta E (CMC),Delta E (CIE 1976), Delta E (CIE 1994), Delta E (CIE 2000) and a varietyof other methods. Furthermore, other differences may be employed,including differences in lightness (L*_(o)*−L*_(c)) and colordifferences computed in any color space. It is recognized that eachcolor space may have a unique nature (e.g., perceptually-based,quasi-perceptually-based, not perceptually-based, linear energy-based,etc.) and set of characteristics.

In one implementation, having determined a difference value (Δ_(i),where i represents an index 1-N associated with individual pixel pairsin the images, e.g., Δ₁ represents the difference between a first pixelfrom the original image and the corresponding pixel of the correctedimage, Δ₂ represents the difference between a second pixel from theoriginal image and the corresponding pixel of the corrected image, . . .) for each pixel pair in the images, the difference module 308determines a root-mean-square (RMS) value of the differences:

$\begin{matrix}{\Delta_{RMS} = \sqrt{\frac{\Delta_{1}^{2} + \Delta_{2}^{2} + \Delta_{3}^{2} + \ldots + \Delta_{N}^{2}}{N}}} & (2)\end{matrix}$

and a maximum value of the differences:

Δ_(MAX)=max(Δ₁,Δ₂,Δ₃, . . . ,Δ_(N))   (3)

The computed values are output as a feature vector and input by a testmodule 310, which determines whether the feature vector satisfies analert criterion (see the discussion regarding FIG. 4). If the testmodule 310 determines that the feature vector satisfies the alertcriterion, an action module 312 executes operations to alert the user ofpotential benefit from a feature of the system (e.g., an auto correctfeature, an auto noise reduction feature, an auto sharpening feature,etc.). In one implementation, the action module 312 prompts the user touse a Quick Fix feature of an image editing software application,although other actions are contemplated. Via the action module 312, theuser may also execute the selected operational feature, as prompted bythe alert, to generate the corrected image.

FIG. 4 illustrates a threshold 400 applicable to differences between anoriginal image and a corrected image. In one implementation, thethreshold 400 represents an alert criterion and is preset within thesystem according to comparisons of a test set of original images andcorrected images. For example, a group of one or more experiencedphotographers or image experts may be surveyed over the test set ofimage pairs and asked to select those image pairs that benefited fromapplication of an operational feature (e.g., auto correct) of thesystem. When the feature vectors are plotted on a graph 402, it can beseen that the surveyed individuals identified certain images asbenefiting from the operational feature (e.g., the circles) and othersas not benefiting from the feature (e.g., the crosses). To determine thethreshold 400, a line is fit between the circles and the crosses using afitting algorithm. It should be understood, however, that other alertcriteria may be applied in alternative implementations, including2-dimensional “thresholds” in a 3-dimensional feature space, etc. Duringthe execution of the test module of FIG. 3, if a pair of images resultin a feature vector that satisfies the alert criterion (e.g., lies abovethe threshold 400), the test module triggers the action module to alertthe user and possibly perform other operations.

It should be understood that individual thresholds may be associatedwith individual features. As such, the threshold applied tosaturation-related elements of the feature vector may be different fromthe threshold applied to brightness-related elements of the featurevector. Accordingly, it is possible for a system to have individualthresholds for all of the operational features it provides.

In another implementation, a threshold may be set or adjusted by theuser. For example, a user may wish to be prompted more or lessfrequently—more frequently may be desirable as the user is firstlearning how to use the system, whereas less frequently may be desirableas the user tires of the alerts. In addition, the threshold may also bedynamically controlled by a feature's pattern of use, wherein thepatterns of use by a user may be stored in a database accessible by theapplication. For example, if the feature is seldom used, the thresholdmay be lowered to increase the probability that an alert may betriggered, thereby guiding the user to an infrequently used operationalfeature from which they may benefit. In this manner, the system “senses”a level of comfort or familiarity the user already has with theoperational feature and adjusts the alerts accordingly.

In yet another implementation, the threshold may also be dynamicallycontrolled by a pattern of response by the user to one or moreoperational feature prompts, wherein the patterns of response by a usermay be stored in a database accessible by the application. For example,if the user frequently rejects the prompt to try a specified operationalfeature, then the associated alert criterion may be altered to make itappear less frequently. In this manner, the system “senses” a level ofsensitivity the user has for the detected corrections and adjusts thealerts accordingly. It should also be understood thatautomatically-adjusted thresholds may be managed individually fordifferent alerts.

In yet another implementation, the alert criteria can be adjusted overtime by the vendor of the media application. For example, the vendor canmonitor user responses to prompts (e.g., via usability testing, surveys,whether or not network-based, and/or test groups) after release of themedia application and send updates of alert criteria to the mediaapplication (e.g., via patch mechanism) to adjust the alert criteria inthe media application.

FIG. 5 illustrates an example system flow 500 for automaticallyinspecting a digital image using evaluation of an original image 502. Incontrast to the example system flow of FIG. 3, in FIG. 5, the inspectiondoes not depend on a corrected image. Instead, the original image 502 isanalyzed without reference to a corrected image (although certain otherparameters may be employed, such as size and color parameters relatingto red-eye detection, etc.).

An evaluation module 504 receives the original image 502 (e.g., reads itfrom a storage disk or memory) and analyzes the original image 502 forany number of conditions. In one implementation, the evaluation module504 may attempt to detect red-eye in the image. Other alternatives mayinclude without limitation detection of an image containing text orexhibiting potential problems, such as a barrel distortion, JPEGartifacts, vignetting, lens distortion, scratches, noise, etc. Forexample, based on red-eye parameters and a red-eye detection algorithm,the evaluation module 504 may output in a feature vector a computedprobability that the image contains one or more instances of red-eye. Atest module 506 can then compare the probability (which roughlyrepresents the expectation that the user may benefit from use of anappropriate operational feature) to an alert criterion (e.g., aprobability threshold) associated with that feature. If the test module506 determines that the computed probability satisfies the alertcriterion, then an action module 508 prompts the user to use a red-eyecorrection feature in the system. The action module 508 may also displaythe computed probability to the user.

An evaluation module 504 may also attempt to detect text in the originalimage 502. Accordingly, in an example of text analysis, the evaluationmodule 504 may compute a probability that text may exist in the originalimage 502 and pass this probability to the test module 506, whichcompares the computed probability to an alert criterion. If the testmodule 506 determines that the computed probability satisfies the alertcriterion, then an action module 508 prompts the user to use an autotagging feature in the system, which reads text from the original image502 and tags the original image file with the extracted text.

In yet another implementation, the evaluation module 504 may analyze theoriginal image 502 relative to an intended purpose. For example, iforiginal image 502 is being opened for inclusion in an email document,the evaluation module 504 may determine the size, format, and/or othercharacteristics of the image file and include them in a feature vector,which is passed to the test module 506. Then, the test module 506 cancompare these characteristics of the image to some requirements of theemail system to determine, for example, whether the image is too largefor such inclusion (relative to some security policy or support incommon email applications), is in the wrong format (relative to somesecurity policy), etc.

Three specific example implementations are described herein(straightening, red-eye correction, and contrast correction), althoughit should be understood that other specific characteristics andoperational features are contemplated for alerts in otherimplementations.

With regard to straightening, the Hough transform may be used to obtaina probability distribution of the presents of lines at varying angles inthe image. The feature vector resulting from this analysis may contain asignal strength (e.g., probability) distribution of lines at 0 and 90degrees, as well as a signal strength distribution of lines in the nearvertical and near horizontal orientations (e.g., −5°≦x≦5°, 85°≦x≦95°,where x is the sampled signal strengths in each orientation category).The decision about whether to prompt the user to use a straighteningfeature of the tool may be determined as follows:

(a) if the near-horizontal/vertical orientations signal strengths aresufficiently strong, AND

(b) if the near-horizontal/vertical orientations signal strengths exceedthe horizontal/vertical signal strengths by a sufficient margin, THEN

prompt the user to use the straightening tool.

With regard to red-eye correction, various metrics may be used todetermine the probability that an image has red-eye:

(a) was a flash used (e.g., as may be determined from EXIF (ExchangeableImage File format) information)?

(b) are there regions of the image in which color lies within aprescribed tolerance (e.g., with a hue range, saturation range, andlightness range associated with red-eye)?

(c) are the sizes of such regions within a prescribed tolerance?

(d) are the shapes of such regions within a prescribed tolerance?

Any of these factors may be employed, as well as others, in anycombination to judge the probability that an undesirable red-eye defectexists within the image. The feature vector may contain metricsassociated with any such factors, may contain an aggregate probabilityof red-eye, or some additional factors.

Contrast is considered a measure of the tone range found in an image,which may be obtained from an image histogram. As a result of histogramanalysis, a feature vector may be generated to contain one or moremeasures of important tones in the image, such as the 0.5% region of thehistogram, 99.5% region of the histogram, and possibly other tonalregions of the histogram to determine whether the image could benefitfrom histogram modification (e.g., stretching) to correct the contrast.

In yet another implementation, EXIF data, which can specify a variety ofcamera settings, context parameters, location information, formattingparameters, etc. (collectively, “image metadata elements”), may be morefully used in selection, setting, or comparison against an alertcriterion. EXIF data associated with an image may specify the type ofcamera, the type of lens, the time of day, the date, f-stop setting,film speed, the latitude/longitude, etc., and the alert criteriaselected for use with the image may be customized based on such data.For example, a noise alert criterion may be omitted or adjusted if acamera having image stabilization was used to capture the image, asharpening alert criterion can be omitted or adjusted if the f-stopsetting is small, resulting in a small depth of field, so as not tosuggest sharpening in the presence of an intentionally blurrybackground, etc.

FIG. 6 illustrates an example screenshot 600 for applying automaticinspection of multiple digital images. In at least one survey, 30% ofdigital images input to an automatic inspection tool were deemed to beable to benefit substantially from an auto correction operation. Thescreenshot 600 represents a user interface of a photo album softwareapplication for managing multiple digital images. In one implementation,as each digital image is input to the photo album software, it isevaluated, such as described with regard to FIGS. 3 and 5, and an alertis displayed if the feature vector resulting from the evaluationsatisfies an alert criterion. Example alerts are shown in FIG. 6 asalerts 602 and 604, which prompt the user that use of one or morefeatures of the photo album software application (or some relatedsoftware application or device) may improve the corresponding image.Note: The alert prompting use of a related software application ordevice may provide an avenue to cross-sell a related product. Forexample, the user may be executing an image management tool, such as thephoto album software application, and the alert may prompt the user topurchase a related image editing tool. The image management tool mayeven provide access to a trial version of the image editing tool throughthe alert. Results of the multiple image inspection may also bepresented as an on-screen table of alerts for each image.

FIG. 7 illustrates example operations 700 for automatically inspecting adigital image. A receiving operation 702 receives an original image intothe system, such as by receiving the original image from a camera via acommunications link, by capturing the original image in a camera, or byreading the original image from memory or a storage disk. For example,in one implementation, the image is read from a file in a file system ofa computing device. Example systems may include a software applicationexecuting on a computing device, a camera, a mobile phone, etc. Itshould be understood that other media, such as video and audio, maybenefit from a similar process.

A generation operation 704 generates a corrected image via one or morecorrection features of the system. For example, the generation operation704 may execute a contrast correction feature or some other feature togenerate a corrected image. It should also be understood that thegeneration operation 704 could execute multiple correction features,including without limitation an auto sharpening feature, an auto correctfeature, a noise reduction feature, a color balance feature, etc.Generally, these correction features represent types of operationalfeatures of the system.

A difference operation 706 computes a difference between the originalimage and the corrected image. Methodologies discussed herein and otherdifference computations may be employed by the difference operation 706.The difference operation 706 generates difference parameters, which maybe included in a feature vector associated with the original image. Thedifference parameters may include values such as Δ_(RMS)/Δ_(MAX) pairs,control setting adjustments from an operation feature, or otherperceptual differences.

In an alternative or parallel flow, an analysis operation 710 mayanalyze the original image itself, independent of the corrected image.For example, the original image may be analyzed for red-eye, text,distortion, and other characteristics, as also discussed herein. In oneimplementation, the analysis operation 710 generates a probabilityparameter for one or more features, and the probability parameters maybe included in a feature vector associated with the original image.

A generation operation 708 generates a feature vector containing one ormore parameters from the difference operation 706 and/or the analysisoperation 710. A decision operation 712 determines whether the featurevector satisfies an alert criterion. It should be understood that thealert criterion may have distinct sub-criteria for individual features.For example, the feature vector may indicate an 85% probability ofred-eye existing in the original image and may indicate two specificΔ_(RMS)/Δ_(MAX) pairs, one relating to an auto sharpening feature of thesystem and the other relating to an auto saturation correction featureof the system. In this example, if any of these three feature vectorelements satisfies an alert criterion for the corresponding feature, analert operation 714 prompts the user to use an appropriate operationalfeature of the system. As a specific example, if an alert criterion forred-eye correction is set at 80% and the threshold for saturationcorrection is set such that the Δ_(RMS)/Δ_(MAX) pair for the saturationdifferences satisfies the threshold, then the user is prompted to usethe red-eye correction feature and the auto saturation correctionfeature. Otherwise, if no feature vector element satisfies acorresponding alert criterion, then a bypass operation 716 bypasses thealert.

In some implementations, articles of manufacture are provided ascomputer program products. One implementation of a computer programproduct provides a computer program storage medium readable by acomputer system and encoding a computer program. Another implementationof a computer program product may be provided in a computer data signalembodied in a carrier wave by a computing system and encoding thecomputer program.

FIG. 8 illustrates components of an example system that can be useful inthe implementation of the described technology. A general purposecomputer system 800 is capable of executing a computer program productto execute a computer process. Data and program files may be input tothe computer system 800, which reads the files and executes the programstherein. Some of the elements of a general purpose computer system 800are shown in FIG. 8 wherein a processor 802 is shown having aninput/output (I/O) section 804, a Central Processing Unit (CPU) 806, anda memory section 808. There may be one or more processors 802, such thatthe processor 802 of the computer system 800 comprises a singlecentral-processing unit 806, or a plurality of processing units,commonly referred to as a parallel processing environment. The computersystem 800 may be a conventional computer, a distributed computer, orany other type of computer. The described technology is optionallyimplemented in software devices loaded in memory 808, stored on aconfigured DVD/CD-ROM 810 or storage unit 812, and/or communicated via awired or wireless network link 814 on a carrier signal, therebytransforming the computer system 800 in FIG. 8 to a special purposemachine for implementing the described operations.

The I/O section 804 is connected to one or more user-interface devices(e.g., a keyboard 816 and a display unit 818), a storage unit 812 (e.g.,a storage disk), and a disk drive unit 820. Generally, in contemporarysystems, the disk drive unit 820 is a DVD/CD-ROM drive unit capable ofreading the DVD/CD-ROM medium 810, which typically contains programs anddata 822. Computer program products containing mechanisms to effectuatethe systems and methods in accordance with the described technology mayreside in the memory section 804, on a storage unit 812, or on theDVD/CD-ROM medium 810 of such a system 800. Alternatively, a disk driveunit 820 may be replaced or supplemented by a floppy drive unit, a tapedrive unit, or other storage medium drive unit. The network adapter 824is capable of connecting the computer system to a network via thenetwork link 814, through which the computer system can receiveinstructions and data embodied in a carrier wave. Examples of suchsystems include personal computers offered by Dell Corporation and byother manufacturers of Intel-compatible personal computers,PowerPC-based computing systems, ARM-based computing systems and othersystems running a UNIX-based or other operating system. It should beunderstood that computing systems may also embody devices such asPersonal Digital Assistants (PDAs), mobile phones, digital cameras,gaming consoles, set top boxes, etc.

When used in a LAN-networking environment, the computer system 800 isconnected (by wired connection or wirelessly) to a local network throughthe network interface or adapter 824, which is one type ofcommunications device. When used in a WAN-networking environment, thecomputer system 800 typically includes a modem, a network adapter, orany other type of communications device for establishing communicationsover the wide area network. In a networked environment, program modulesdepicted relative to the computer system 800 or portions thereof, may bestored in a remote memory storage device. It is appreciated that thenetwork connections shown are exemplary and other means of andcommunications devices for establishing a communications link betweenthe computers may be used.

In an exemplary implementation, an evaluation module, a differencemodule, a correction module, a test module, an action module and othermodules may be incorporated as part of the operating system, applicationprograms, or other program modules. Image data, alert criteria, featurevectors, alerts, and other data may be stored as program data.

The technology described herein may be implemented as logical operationsand/or modules in one or more systems. The logical operations may beimplemented (1) as a sequence of processor-implemented steps executingin one or more computer systems and (2) as interconnected machine orcircuit modules within one or more computer systems. Likewise, thedescriptions of various component modules may be provided in terms ofoperations executed or effected by the modules. The resultingimplementation is a matter of choice, dependent on the performancerequirements of the underlying system implementing the describedtechnology. Accordingly, the logical operations making up theembodiments of the technology described herein are referred to variouslyas operations, steps, objects, or modules. Furthermore, it should beunderstood that logical operations may be performed in any order, unlessexplicitly claimed otherwise or a specific order is inherentlynecessitated by the claim language.

The above specification provides a complete description of themethodologies, systems and/or structures and uses thereof in exampleimplementations of the presently-described technology. Although variousimplementations of this technology have been described above with acertain degree of particularity, or with reference to one or moreindividual implementations, those skilled in the art could make numerousalterations to the disclosed implementations without departing from thespirit or scope of the technology hereof. Since many implementations canbe made without departing from the spirit and scope of the presentlydescribed technology, the appropriate scope resides in the claimshereinafter appended. In particular, it should be understood that thedescribed technology may be employed in virtually all, if not indeedall, digital imaging. Other implementations are therefore contemplated.Furthermore, it should be understood that any operations may beperformed in any order, unless explicitly claimed otherwise or aspecific order is inherently necessitated by the claim language. It isintended that all matter contained in the above description and shown inthe accompanying drawings shall be interpreted as illustrative only ofparticular implementations and are not limiting to the embodimentsshown. Changes in detail or structure may be made without departing fromthe basic elements of the present technology as defined in the followingclaims.

1. A method comprising: receiving one or more original media elementsinto a computing application; analyzing one or more characteristics ofthe one or more original media elements to generate a feature vector foreach original media element, the feature vector including arepresentation of an analysis result for each of the one or morecharacteristics; prompting the user about an operational feature of thecomputing application, if the feature vector satisfies an alertcriterion associated with the operational feature.
 2. The method ofclaim 1 wherein the operational feature is an image correction featureof the computer application.
 3. The method of claim 1 furthercomprising: receiving user input specifying that the operational featureshould be automatically executed without a prompt if the alert criterionis satisfied by a feature vector of a subsequently received mediaelement; automatically executing the operational feature on thesubsequently received media element without a prompt if the featurevector for the subsequently received media element satisfies the alertcriterion, responsive to the operation of user input.
 4. The method ofclaim 1 wherein the alert criterion is adjustable by the user.
 5. Themethod of claim 1 wherein the alert criterion is adjustable according topattern of responses to operational feature prompts by the user.
 6. Themethod of claim 1 wherein the alert criterion is adjustable according toone or more image metadata elements.
 7. The method of claim 1 furthercomprising: maintaining a database recording previous responses tooperational feature prompts by the user; adjusting the alert criterionaccording to the responses stored in the database.
 8. The method ofclaim 1 wherein the alert criterion is adjustable based on data receivedremotely from a vendor of the computing application.
 9. The method ofclaim 1 wherein the alert criterion is associated with a specificcharacteristic of the media element, other alert criteria are associatedwith other specific characteristics, and further comprising: promptingthe user about one or more other operational features of the computingapplication, if the feature vector satisfies at least one of the otheralert criteria associated with the operational features.
 10. The methodof claim 1 wherein the prompting operation comprises: generating anaudible prompt specifying the operation feature.
 11. The method of claim1 wherein the prompting operation comprises: displaying an alertspecifying the operational feature with reference to the image.
 12. Themethod of claim 1 wherein the prompting operation comprises: promptingthe user about multiple operational features of the computingapplication simultaneously.
 13. The method of claim 1 wherein theprompting operation comprises: displaying a probability that acorrectable characteristic is present in the image.
 14. The method ofclaim 1 wherein the prompting operation comprises: prompting the userabout the operational feature of the computing application withreference to multiple media elements simultaneously.
 15. The method ofclaim 1 further comprising: executing the operational feature inresponse to user input; providing user access to an undo feature toallow the user to undo the results of the operational feature,responsive to execution operation.
 16. A computer-readable medium havingcomputer-executable instructions for performing a computer process on acomputing system, the computer process comprising: receiving one or moreoriginal media elements into a computing application executing on thecomputing system; analyzing one or more characteristics of the one ormore original media elements to generate a feature vector for eachoriginal media element, the feature vector including a representation ofan analysis result for each of the one or more characteristics;prompting the user about an operational feature of the computingapplication, if the feature vector satisfies an alert criterionassociated with the operational feature.
 17. The computer-readablemedium of claim 16 wherein the operational feature is an imagecorrection feature of the computer application.
 18. Thecomputer-readable medium of claim 16 further comprising: receiving userinput specifying that the operational feature should be automaticallyexecuted without a prompt if the alert criterion is satisfied by afeature vector of a subsequently received media element; automaticallyexecuting the operational feature on the subsequently received mediaelement without a prompt if the feature vector for the subsequentlyreceived media element satisfies the alert criterion.
 19. Thecomputer-readable medium of claim 16 wherein the prompting operationcomprises: prompting the user about the operational feature of thecomputing application with reference to multiple media elementssimultaneously.
 20. A method comprising: prompting the user about anoperational feature of a computing application, if one or more originalmedia elements received and analyzed by the computing applicationsatisfy an alert criterion associated with the operational feature.